package com.xinchao.dao;

import com.github.pagehelper.Page;
import com.xinchao.model.DeviceModel;
import com.xinchao.model.dto.DeviceModelDTO;
import com.xinchao.model.vo.DeviceModelExportListVO;
import com.xinchao.model.vo.DeviceModelListVO;
import com.xinchao.model.vo.DeviceModelSelectListVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 终端机型
 *
 * @author linqiang
 * @date 2018-08-07 14:47
 */
public interface DeviceModelMapper {
    /**
     * 根据主键删除
     *
     * @param deviceModelId 主键
     * @return 影响行数
     */
    int deleteByPrimaryKey(Long deviceModelId);

    /**
     * 插入
     *
     * @param record 机型
     * @return 影响行数
     */
    int insert(DeviceModel record);

    /**
     * 插入（不为空的字段）
     *
     * @param record 机型
     * @return 影响行数
     */
    int insertSelective(DeviceModel record);

    /**
     * 根据主键查询单个机型
     *
     * @param deviceModelId 主键
     * @return DeviceModel
     */
    DeviceModel selectByPrimaryKey(Long deviceModelId);

    /**
     * 更新机型
     *
     * @param record 机型
     * @return 影响行数
     */
    int updateByPrimaryKey(DeviceModel record);

    /**
     * 更新机型
     *
     * @param record 机型
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(DeviceModel record);

    /**
     * 获取终端型号分页列表
     *
     * @return Page<DeviceModelListVO>
     */
    Page<DeviceModelListVO> listDeviceModelByPage(@Param("deviceModel") String deviceModel, @Param("mainboard") String mainboard, @Param("brand") String brand, @Param("isExist4G") Boolean isExist4G);

    /**
     * 通过型号名称查找终端机型信息
     *
     * @param deviceModel 型号名称
     * @return DeviceModel
     */
    DeviceModel getDeviceModelByName(String deviceModel);

    /**
     * 逻辑删除
     *
     * @param deviceModelId 主键
     */
    void delete(Long deviceModelId);

    /**
     * 根据机型ID统计终端数量
     *
     * @param deviceModel 机型
     * @return int
     */
    int countDeviceByDeviceModelId(String deviceModel);

    /**
     * 查询下拉集合
     *
     * @return List<DeviceModelSelectListVO>
     */
    List<DeviceModelSelectListVO> selectList();

    /**
     * 查询指定升级包中的机型
     *
     * @param deviceUpgradeId 更新ID
     * @return List<DeviceModelDTO>
     */
    List<DeviceModelDTO> listDeviceModelsSelectedUpgrade(@Param("deviceUpgradeId") Long deviceUpgradeId);

    /**
     * 获取终端型号列表
     * hanqr 2018-08-14
     *
     * @return
     */
    List<DeviceModelDTO> listDeviceModels();

    /**
     * 终端机型导出列表
     *
     * @return List
     */
    List<DeviceModelExportListVO> listExport(@Param("deviceModel") String deviceModel, @Param("mainboard") String mainboard, @Param("brand") String brand, @Param("isExist4G") Boolean isExist4G);
}